#

| Chapter 45 Shell Programming for the Initiated |

## 45.19 A while Loop with Several Loop Control Commands

Most people think the Bourne shell's while loop (44.10) looks like this, with a single command controlling the loop:

>     while command
>     do
>          ...whatever
>     done

But `command` can actually be a list of commands. The exit status of the last command controls the loop. This is handy for prompting users and reading answers - when the user types an empty answer, the read command returns "false" and the loop ends:

>     while echo "Enter command or CTRL-d to quit: \c"
>           read command
>     do
>           ...process $command
>     done

Here's a loop that runs who and does a quick search on its output. If the grep returns non-zero status (because it doesn't find `$who` in `$tempfile`), the loop quits - otherwise, the loop does lots of processing:

>     while
>         who > $tempfile
>         grep "$who" $tempfile >/dev/null

>     do
>         ...process $tempfile...
>     done

- JP

45.18 Using basename and dirname |  | 45.20 Overview: Open Files and File Descriptors